Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
b59cc95
test/document nvim support in readme
aganse Dec 14, 2025
7b8ffb8
readme formatting honing
aganse Dec 14, 2025
bc3cb09
remore adme formatting honing
aganse Dec 14, 2025
278bd32
rere adreme fohoning
aganse Dec 14, 2025
0b30d6a
remore readme honing
aganse Dec 14, 2025
8636729
relast readme honing
aganse Dec 14, 2025
d5abff0
more readme honing
aganse Dec 16, 2025
84cbffd
more readme update
aganse Dec 16, 2025
dc895a3
documentation updates
aganse Dec 16, 2025
d70e1b3
doreadme etc updates
aganse Dec 20, 2025
03b4c75
add workflows/unittests and makefile
aganse Dec 21, 2025
bb96896
test unittest workflows with bug placed at top of plugin/vim-mlflow.vim
aganse Dec 21, 2025
2a208ed
update unittest calls to output error details in workflow
aganse Dec 21, 2025
aacd634
get error reporting to work in vim unittests
aganse Dec 21, 2025
e0bd3c8
update vim/nvim unittest workflow to output both
aganse Dec 21, 2025
2642add
fix badges in readme
aganse Dec 21, 2025
b16db84
resolve flake8 and unittests, fix badges in readme
aganse Dec 21, 2025
f46ac13
fix badges
aganse Dec 21, 2025
b0b6bf7
fix badges in readme
aganse Dec 21, 2025
d362707
fix last badge in readme
aganse Dec 21, 2025
ccb8d63
adding vint workflow and rename linting workflows to codestyle-...
aganse Dec 21, 2025
232782c
fix vint failures
aganse Dec 21, 2025
e5803cb
separate version into VERSION file
aganse Dec 21, 2025
32051c2
make version badge look at VERSION
aganse Dec 21, 2025
94d2be6
fix version badge in readme
aganse Dec 21, 2025
bff18a1
add requirements file and env target; bump version
aganse Dec 21, 2025
a64ea0e
readme update
aganse Dec 21, 2025
317fa0f
tweak readme
aganse Dec 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .flake8
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[flake8]
max-line-length = 100
18 changes: 18 additions & 0 deletions .github/workflows/codestyle-python-flake8.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
name: codestyle-python-flake8

on:
push:
pull_request:

jobs:
flake8:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
with:
python-version: "3.11"
- name: Install Flake8
run: pip install flake8
- name: Run Flake8
run: flake8 python tests/python tests/fixtures
18 changes: 18 additions & 0 deletions .github/workflows/codestyle-vimscript-vint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
name: codestyle-vimscript-vint

on:
push:
pull_request:

jobs:
vint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
with:
python-version: "3.11"
- name: Install vint
run: pip install vim-vint
- name: Run vint
run: vint plugin
18 changes: 18 additions & 0 deletions .github/workflows/unittests-python.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
name: unittests-python

on:
push:
pull_request:

jobs:
pytest:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
with:
python-version: "3.11"
- name: Install dependencies
run: pip install pytest
- name: Run pytest
run: pytest tests/python
47 changes: 47 additions & 0 deletions .github/workflows/unittests-vim.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: unittests-vimscript

on:
push:
pull_request:

jobs:
vim-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Vim and Neovim
run: |
sudo apt-get update
sudo apt-get install -y vim neovim
- name: Run Vimscript tests (Neovim then Vim)
run: |
set +e
rm -f nvim-test.log vim-test.log

echo
echo "Starting Neovim unittest"
nvim --headless -u NONE -i NONE -V1nvim-test.log \
-c "source tests/vim/run_tests.vim" \
-c "qa"
nvim_status=$?
if [ $nvim_status -ne 0 ]; then
echo "Neovim test failed:"
cat nvim-test.log
fi

echo
echo "Starting Vim unittest"
vim -E -u NONE -i NONE -V1vim-test.log \
-c "source tests/vim/run_tests.vim" \
-c "qa"
vim_status=$?
if [ $vim_status -ne 0 ]; then
echo "Vim test failed:"
cat vim-test.log
fi

rm -f nvim-test.log vim-test.log

if [ $nvim_status -ne 0 ] || [ $vim_status -ne 0 ]; then
exit 1
fi
88 changes: 88 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
# Contributing

Thank you for your interest in contributing. Please read this document
carefully before opening an issue or pull request.


## Scope and expectations

This project is a Vim plugin implemented in Vim script with a Python backend.
It is maintained on a best-effort basis by a single maintainer alongside other
commitments. The primary goals are correctness, stability, and low
maintenance overhead (but some feature expansion and keeping up with version
updates of MLflow/Vim/NVim are still of interest!).

The following contributions are most welcome:

* Bug fixes with clear reproduction steps
* Documentation improvements
* Small, focused enhancements that align with the existing design

The following are less likely to be accepted:

* Large or architectural changes
* Features that significantly increase configuration surface area
* Changes that introduce new heavy dependencies

One goal of this plugin is breadth of support, ie ensuring it works on both
Vim and NVim, on Linux/MacOS/Windows, and on older versions of the supporting
tools. So contributions are expected to support the minimum versions of:
Vim 8.2, NVim v0.11.5, Python 3.10, and MLflow 2.12.0. (Ok that NVim version
is not old but the rest are - point being to accommodate older versions in
addition to the newer ones.) Of course MLflow in particular has features in
v3.x that are not available in x2.x, but the point is to enable it to still
work with v2.x within the limits of v2.x's capabilities.

Vim-specific contribution requirements:

* `:help` documentation: User-facing changes must update the appropriate
`doc/*.txt` help files with proper help tags. README-only documentation is
not sufficient for end-user behavior.
* Backward compatibility: Behavior changes require clear justification and
corresponding documentation updates. Preserving existing workflows is
strongly preferred.

In addition to unittests and codestyle workflows passing, contributors are
expected to thoroughly test their updates end-to-end themselves within vim/nvim
before submitting a PR.


## Issues

Before opening an issue:

* Check existing issues to avoid duplicates
* For bugs, include Vim/NVim version, Python version, OS version, and minimal
repro steps
* For feature requests, clearly describe the use case and why it fits the
project’s scope

Issues that are vague, unreproducible, or out of scope may be closed without
further discussion.


## Pull requests

Guidelines:

* Keep PRs small and narrowly scoped
* One logical change per PR
* Follow existing code style in both Vim script and Python
* Add or update tests when applicable
* Update documentation if behavior changes
* Write commit messages per [commit.style](https://commit.style).

All PRs must pass CI before they will be reviewed. Review may take time, and
not all PRs will be merged.


## Code of conduct

Contributors are expected to be respectful and professional in their
communication and behavior at all times.


## License

By contributing, you agree that your contributions will be licensed under the
project’s license.
41 changes: 41 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
.PHONY: codestyle-python-flake8 codestyle-vimscript-vint unittests unittests-vim unittests-vim-vim unittests-vim-nvim unittests-python env

dev-env:
@python3 -m pip install -r dev-requirements.txt

codestyle: codestyle-vimscript-vint codestyle-python-flake8

codestyle-vimscript-vint:
@command -v vint >/dev/null 2>&1 || { echo "vint not available; install it (pip install vim-vint)."; exit 1; }
vint plugin

codestyle-python-flake8:
@python3 -m flake8 python tests/python tests/fixtures

unittests: unittests-vim unittests-python

unittests-vim: unittests-vim-nvim unittests-vim-vim

unittests-vim-vim:
@echo
@echo --
@echo Starting Vim unittest...
@command -v vim >/dev/null 2>&1 || { echo "vim not available on PATH."; exit 1; }
@rm -f vim-test.log
@vim -E -u NONE -i NONE -V1vim-test.log -c "source tests/vim/run_tests.vim" -c "qa" || { cat vim-test.log; exit 1; }
@rm -f vim-test.log

unittests-vim-nvim:
@echo
@echo --
@echo Starting NVim unittest...
@command -v nvim >/dev/null 2>&1 || { echo "nvim not available on PATH."; exit 1; }
@rm -f nvim-test.log
@nvim --headless -u NONE -i NONE -V1nvim-test.log -c "source tests/vim/run_tests.vim" -c "qa" || { cat nvim-test.log; exit 1; }
@rm -f nvim-test.log

unittests-python:
@echo --
@echo Starting Python unittest...
@command -v pytest >/dev/null 2>&1 || { echo "pytest not available; install it in your virtualenv."; exit 1; }
@pytest tests/python
Loading