Skip to content

Commit 98fb642

Browse files
Merge pull request #13 from venkatarenduchintala/feat/ci-validate-pipeline
feat(ci): add GitHub Actions pipeline to validate Neovim config
2 parents a27af99 + 87720ae commit 98fb642

2 files changed

Lines changed: 60 additions & 44 deletions

File tree

.github/workflows/validate.yml

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
name: Validate Neovim Config
2+
3+
on:
4+
push:
5+
branches: ["**"]
6+
pull_request:
7+
branches: [master]
8+
9+
jobs:
10+
validate:
11+
name: Build & validate Neovim
12+
runs-on: ubuntu-latest
13+
# Skip docs: and chore: commits on push; always run on pull requests
14+
if: |
15+
github.event_name == 'pull_request' ||
16+
(
17+
!startsWith(github.event.head_commit.message, 'docs:') &&
18+
!startsWith(github.event.head_commit.message, 'chore:')
19+
)
20+
21+
steps:
22+
- name: Checkout
23+
uses: actions/checkout@v4
24+
25+
- name: Set up Docker Buildx
26+
uses: docker/setup-buildx-action@v3
27+
28+
- name: Build devcontainer image
29+
uses: docker/build-push-action@v6
30+
with:
31+
context: .
32+
file: .devcontainer/Dockerfile
33+
tags: nvim-config:ci
34+
load: true
35+
cache-from: type=gha
36+
cache-to: type=gha,mode=max
37+
38+
- name: Check Neovim version
39+
run: docker run --rm nvim-config:ci nvim --version
40+
41+
- name: Validate Neovim starts headless
42+
run: |
43+
docker run --rm \
44+
-v "${{ github.workspace }}:/home/dev/.config/nvim:ro" \
45+
nvim-config:ci \
46+
nvim --headless --noplugin +qall

README.md

Lines changed: 14 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,40 @@
11
# Neovim configuration for Java, Python, Rust and Lua
22

3-
This is my personal LUA based configuration for Neovim that I use on a daily basis as Java, Python and RUST IDE. This setup is the product of continuous enhancements based in what I have found in configurations shared by other users. It is an ongoing project that may evolve with time as I come accross with new plugins, refine mappings or refactor configuration files.<br>Feel free to fork this repository and adapt it to your own needs.
3+
Personal Lua-based Neovim configuration used as a daily IDE for Java, Python and Rust development.
44

5-
<br>
6-
7-
*Autocompletion*
8-
![lsp autocompletion](./screenshots/nvim_lsp_cmp.png?raw=true)
9-
10-
*Compilation errors*
11-
![lsp autocompletion](./screenshots/nvim_lsp_errors.png?raw=true)
12-
13-
*Debug*
14-
![lsp autocompletion](./screenshots/nvim_dap.png?raw=true)
5+
> **Disclaimer:** This configuration is based on and forked from [magidc/nvim-config](https://github.com/magidc/nvim-config). Credits to the original author for the foundational setup.
156
16-
*Launching Java application*
17-
![lsp autocompletion](./screenshots/nvim_java_launch.png?raw=true)
18-
19-
*Telescope fuzzy finder*
20-
![telecope usage](./screenshots/nvim_telescope.png?raw=true)
7+
<br>
218

229
# Installation
2310
## Manual Setup
2411
0. Clone this repository into `~/.config/nvim`:
2512
```
2613
git clone --depth 1 https://github.com/venkatarenduchintala/nvim-config.git ~/.config/nvim
2714
```
28-
1. Install latest [NeoVIM version](https://github.com/neovim/neovim/wiki/Installing-Neovim). The configuration also includes an script to install automatically Neovim in APT based Linux distributions (Debian, Ubuntu, PopOs...). See [install_nvim.sh](https://github.com/magidc/nvim-config/blob/master/install_nvim.sh)
29-
2. Install [ripgrep](https://github.com/BurntSushi/ripgrep) into your OS. It is required by some [Telescope](https://github.com/nvim-telescope/telescope.nvim) plugin searching modes.
30-
31-
3. This environment is preconfigured with Language Server Providers (LSP) and Debug Adapters (DAP) for Java, Python, Rust and Lua. These components provide IDE features like autocompletions, error highlight or debugging. As it is required to have installed these components in your system, this Neovim setup relies on [mason.nvim](https://github.com/mason-org/mason.nvim#installation) plugin to install them automatically if they are missing.
32-
<br>
33-
34-
# UI theme
35-
Several UI themes are preconfigured in this setup. Active theme is set by editing file `lua/settings.lua`.
36-
Default active theme is [Tokyonight](https://github.com/folke/tokyonight.nvim).
15+
1. Install latest [Neovim](https://github.com/neovim/neovim/wiki/Installing-Neovim).
16+
2. Install [ripgrep](https://github.com/BurntSushi/ripgrep) — required by some [Telescope](https://github.com/nvim-telescope/telescope.nvim) search modes.
17+
3. LSP servers and DAP adapters (Java, Python, Rust, Lua) are managed automatically by [mason.nvim](https://github.com/mason-org/mason.nvim) on first launch.
3718
3819
<br>
3920
40-
# Custom mappings
41-
Most of mappings are defined in file `lua/mappings.lua`. WhichKey plugin is used in order to provide a description for each one of them.
42-
Other mappings can be found in specific plugin configuration files in `lua/plugins/configs` directory. Also, language specific mappings are defined in LSP config files, these mappings are only available when working with specific programming languages (when LSP are attached)
21+
# UI Theme
22+
Several UI themes are preconfigured. The active theme is set in `lua/settings.lua`.
23+
Default: [Tokyonight](https://github.com/folke/tokyonight.nvim).
4324
4425
<br>
4526
46-
# Equivalent mapping configurations for other IDEs VIM integrations
47-
I have created configuration files with (almost) equivalent mappings for [Eclipse IDE vim plugin (vrapper)](https://github.com/magidc/dotfiles/blob/master/vrapperrc), [IntelliJ vim plugin (ideaVim)](https://github.com/magidc/dotfiles/blob/master/jetbrains/ideavimrc) and [VSCode vim plugin (vscodevim)](https://github.com/magidc/dotfiles/blob/master/vscode/keybindings.json).
48-
These configurations will allow users who are used to these key combinations to remain confortable and efficient while working with other IDEs.
27+
# Custom Mappings
28+
Core mappings are defined in `lua/mappings.lua`. [WhichKey](https://github.com/folke/which-key.nvim) provides inline descriptions for all bindings.
29+
Plugin-specific mappings live in `lua/plugins/configs/`. LSP mappings are defined in `lua/lsp/` and are only active when a language server is attached.
4930
5031
<br>
5132
52-
# Featured plugins
33+
# Featured Plugins
5334
* [Telescope](https://github.com/nvim-telescope/telescope.nvim)
5435
> Highly extendable fuzzy finder over lists
5536
* [Neotree](https://github.com/nvim-neo-tree/neo-tree.nvim)
56-
> Tree file explorer
37+
> Tree file explorer
5738
* [Aerial](https://github.com/stevearc/aerial.nvim)
5839
> Code outline window for skimming and quick navigation
5940
* [WhichKey](https://github.com/folke/which-key.nvim)
@@ -63,14 +44,3 @@ These configurations will allow users who are used to these key combinations to
6344
* [Nvim-dap](https://github.com/mfussenegger/nvim-dap)
6445
> Debug Adapter Protocol client implementation for Neovim
6546
* Others...
66-
67-
<br>
68-
69-
# Troubleshooting
70-
If you have problems while installing or using this setup, please report an issue,
71-
72-
<br>
73-
74-
# Feedback and suggestions
75-
I would appreciate suggestions and feedback regarding this Neovim configuration. As it is an ongoing project I will be changing over the time to become more useful and easy to use. Please do not hesitate to contact me if you have any comments
76-

0 commit comments

Comments
 (0)