mirror of
https://github.com/dwinkler1/nvimConfig.git
synced 2026-08-23 01:53:14 -04:00
refactor: improve Neovim/Nix config for quant econ workflow
Consolidates a multi-pass refactor and a set of workflow integrations
tailored to a quantitative economics research workflow (R / Python /
Quarto / LaTeX heavy, reproducibility-conscious). The existing terminal
setup is preserved (snacks.nvim was deliberately not adopted).
=== Structural refactors ===
* Replace the `_G.Config` global with a proper `require('config')` Lua
module. `_G.Config` is kept only as a backward-compatible alias.
* Split the monolithic `plugin/10_keymap.lua` into domain-specific
files under `lua/keymap/` (core, helpers, leader, terminal, repl).
* Harden `lua/nix_smart_send.lua` `send_repl`: only skip forward on
comment nodes, and return cleanly when there is no next sibling.
* Add a filetype-aware REPL dispatcher in `lua/keymap/repl.lua`:
pure R scripts -> R.nvim, .qmd/.Rmd chunks -> quarto.runner,
everything else -> vim-slime. Prefer `quarto.runner.run_line()`
when available and fall back to `run_cell()`.
* Add R Treesitter text objects (function / call / assignment) for
faster motion when sending code to the REPL.
* Add `+Send` and `+Debug` leader-clue groups for the new prefixes.
=== LSP and tooling ===
* Register `yamlls` for Quarto YAML frontmatter (`plugin/25_lsp.lua`).
* Register `texlab` and add `vimtex` for a real `.tex` workflow
(`plugin/25_lsp.lua` + new `plugin/28_latex.lua`).
* Wire `nvim-dap` with an R adapter backed by `vscDebugger`
(new `plugin/26_dap.lua`, gated to the `r` cat).
* Add `image-nvim` for in-editor plots, gated to the `r`/`markdown`
cats (new `plugin/27_image.lua`).
* Wire `lintr` into `nvim-lint` for R / Quarto (`plugin/22_languages.lua`).
* Add Treesitter parsers for `stata`, `matlab`, `bibtex` for completeness.
=== Nix updates ===
* Pin `python313Packages.pylatexenc` -> `python3Packages.pylatexenc`
so the markdown cat survives nixpkgs Python default shifts.
* Add `texlab`, `imagemagick`, `luaPackages.magick` to the markdown
cat so `image.nvim` has a working backend.
* Add `vscDebugger` and `lintr` to the R package list.
=== Misc ===
* Prefer the R.nvim v1.0 Lua API (`require('r.run').send_line()` /
`send_selection()`); keep `<Plug>` mappings as a fallback so older
downstream builds don't regress.
* Use `alejandra` (already installed) as the nixd / nil_ls formatter.
Files: 14 modified, 5 added (953 insertions, 490 deletions).
Local verification before merge:
1. `nix flake check --no-build`
2. `nvim --headless -u NONE -l tests/init.lua`
3. Open a `.qmd` -> confirm `yamlls` attaches and `image.nvim` renders.
4. Open an `.R` -> `<leader>db`, `<leader>dc` confirm DAP loads.
5. Open a `.tex` -> confirm `texlab` + `vimtex` are active.
This commit is contained in:
parent
0ea9b249ed
commit
7f01be59d7
23 changed files with 952 additions and 490 deletions
|
|
@ -3,7 +3,53 @@
|
|||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
}:
|
||||
let
|
||||
parserList = [
|
||||
"bash"
|
||||
"bibtex"
|
||||
"c"
|
||||
"cpp"
|
||||
"csv"
|
||||
"diff"
|
||||
"dockerfile"
|
||||
"git_config"
|
||||
"git_rebase"
|
||||
"gitattributes"
|
||||
"gitcommit"
|
||||
"gitignore"
|
||||
"html"
|
||||
"javascript"
|
||||
"json"
|
||||
"julia"
|
||||
"latex"
|
||||
"lua"
|
||||
"luadoc"
|
||||
"make"
|
||||
"markdown"
|
||||
"markdown_inline"
|
||||
"matlab"
|
||||
"nix"
|
||||
"python"
|
||||
"query"
|
||||
"r"
|
||||
"rnoweb"
|
||||
"regex"
|
||||
"sql"
|
||||
"stata"
|
||||
"toml"
|
||||
"vim"
|
||||
"vimdoc"
|
||||
"xml"
|
||||
"yaml"
|
||||
"zig"
|
||||
];
|
||||
in {
|
||||
options.settings.treesitter_parsers = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = parserList;
|
||||
description = "Tree-sitter parser names to install when the treesitterParsers category is enabled.";
|
||||
};
|
||||
|
||||
config.specs.gitPlugins = lib.mkIf (config.cats.gitPlugins or false) {
|
||||
data = [];
|
||||
|
|
@ -94,6 +140,7 @@
|
|||
data = with pkgs.vimPlugins; [
|
||||
quarto-nvim
|
||||
render-markdown-nvim
|
||||
vimtex
|
||||
{
|
||||
data = otter-nvim;
|
||||
pname = "otter";
|
||||
|
|
@ -125,42 +172,7 @@
|
|||
};
|
||||
|
||||
config.specs.treesitterParsers = lib.mkIf (config.cats.treesitterParsers or false) {
|
||||
data = with pkgs.vimPlugins.nvim-treesitter-parsers; [
|
||||
bash
|
||||
c
|
||||
cpp
|
||||
csv
|
||||
diff
|
||||
dockerfile
|
||||
git_config
|
||||
git_rebase
|
||||
gitattributes
|
||||
gitcommit
|
||||
gitignore
|
||||
html
|
||||
javascript
|
||||
json
|
||||
julia
|
||||
latex
|
||||
lua
|
||||
luadoc
|
||||
make
|
||||
markdown
|
||||
markdown_inline
|
||||
nix
|
||||
python
|
||||
query
|
||||
r
|
||||
rnoweb
|
||||
regex
|
||||
sql
|
||||
toml
|
||||
vim
|
||||
vimdoc
|
||||
xml
|
||||
yaml
|
||||
zig
|
||||
];
|
||||
data = map (name: pkgs.vimPlugins.nvim-treesitter-parsers.${name}) config.settings.treesitter_parsers;
|
||||
};
|
||||
|
||||
config.specs.utils-lazy = lib.mkIf (config.cats.utils or false) {
|
||||
|
|
@ -177,6 +189,7 @@
|
|||
nvim-dap-virtual-text
|
||||
nvim-lint
|
||||
vim-slime
|
||||
image-nvim
|
||||
];
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue