Skip to content

SimonAB/process-nvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

221 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

process-nvim

Documentation

Neovim configuration optimised for academic research and scientific computing. Document processing: LaTeX (VimTeX, SyncTeX), Markdown (preview, Obsidian), Quarto (R/Python/Julia execution), Typst (preview). Scientific computing: Julia REPL (multi-threaded), Python LSP (pyright), R execution. Development: LSP (15+ languages via Mason), completion (blink.cmp with blink.lib), terminal integration, Git integration. Modular architecture. vim.pack plugin management. Neovim 0.12+ required.

Features

Document Processing

  • LaTeX: VimTeX, bidirectional SyncTeX (Skim)
  • Markdown: Live preview, Obsidian integration
  • Quarto: Code execution (R, Python, Julia)
  • Typst: Preview (typst-preview), CLI compile/watch (typst c / typst w)

Scientific Computing

  • Julia: REPL integration, multi-threaded execution
  • Python: LSP (pyright)
  • R: Code execution, project management

Development Environment

  • LSP: 15+ languages (Mason)
  • Completion: blink.cmp (with blink.lib dependency)
  • Terminal: Code block detection
  • Git: GitSigns, LazyGit

Requirements

Essential

  • Package Manager:
    • macOS: Homebrew (install here)
    • Arch Linux: pacman (built-in) and yay/paru for AUR packages
  • Neovim 0.12+ (required for vim.pack plugin management)
  • Git
  • Cargo (recommended: builds blink.cmp native fuzzy matcher from source)
  • ripgrep, fd (for Telescope fuzzy finding)

Document Processing

  • LaTeX:
    • macOS: MacTeX or BasicTeX, Skim PDF viewer
    • Arch Linux: texlive-most, Zathura PDF viewer
  • Typst:
    • macOS: brew install typst
    • Arch Linux: yay -S typst (AUR)
  • Markdown: Node.js (for preview plugin)

Language Support

  • Julia: Julia 1.9+ with LanguageServer.jl
  • Python: Python 3.8+ with pyright LSP
  • R: R 4.0+ with languageserver package

See Installation Guide.

Installation

# Clone configuration
git clone https://github.com/SimonAB/process-nvim.git ~/.config/nvim
cd ~/.config/nvim

# First launch (plugins auto-install)
nvim

# Verify installation
nvim

Plugins install automatically on first launch (vim.pack). Mason prompts for language server installation.

Quick Reference

Leader: <Space>

Key Action
<leader>f Find files (Telescope)
<leader>g Live grep in project
<leader>R / <leader>Rf Find files (frecency)
<leader>e Toggle file explorer
<leader>w Save file

Terminal Integration

Key Action
<C-t> Toggle terminal (ToggleTerm open_mapping)
<leader>Tt Terminal toggle (vertical, smart)
<leader>Th/Tv/Tf Horizontal/Vertical/Float terminal

Document Workflows

Key Action
<localleader>lv LaTeX forward search (VimTeX)
<localleader>ll Compile LaTeX (VimTeX)
<localleader>lb LuaLaTeX + Biber (custom terminal workflow)
<localleader>tp<localleader>tw Typst preview / sync / typst c / typst w
<leader>Kp Markdown preview
<leader>Qp Quarto preview

Julia Development

Key Action
<leader>Jrh/v/f Julia REPL (horizontal/vertical/float)
<leader>Jp Project status
<leader>Ji Instantiate project

Julia REPLs launch with --threads=auto for parallel computing.

Theme Management

Key Action
<leader>Yc Cycle themes
<leader>YTp Theme picker (Telescope)
<leader>YTs Show current theme

See Keymaps Reference.

Configuration Structure

~/.config/nvim/
├── init.lua              # Entry point
├── lua/
│   ├── config.lua        # Editor settings
│   ├── keymaps-core.lua  # Core keymaps (plugin-independent)
│   ├── keymaps-plugins.lua # Plugin keymaps (deferred)
│   ├── keymaps.lua       # Compatibility wrapper (loads both)
│   ├── plugins.lua       # Plugin definitions
│   ├── core/             # Core functionality
│   │   ├── theme-manager.lua
│   │   ├── plugin-manager.lua
│   │   └── theme-picker.lua
│   └── plugins/          # Plugin configurations
│       ├── blink-cmp.lua
│       ├── nvim-lspconfig.lua
│       ├── telescope.lua
│       ├── toggleterm-nvim.lua
│       └── vimtex.lua
├── docs/                 # Documentation
└── scripts/              # Utility scripts

Customisation

Adding Plugins

Edit lua/plugins.lua:

local plugins = {
	{ src = "https://github.com/user/plugin", name = "plugin" },
}

Custom Keymaps

Add plugin-independent mappings to lua/keymaps-core.lua, and plugin-dependent mappings to lua/keymaps-plugins.lua:

vim.keymap.set("n", "<leader>custom", ":CustomCommand<CR>", 
    { desc = "Custom command" })

LSP Configuration

Install language servers via Mason:

:Mason                    " Open Mason interface
<leader>MA               " Install academic LSP servers
<leader>MR               " Install all recommended servers

Documentation

Troubleshooting

LSP Issues

:checkhealth          " Diagnose Neovim health
:Mason                " Check installed language servers
<leader>Ll            " List active LSP servers
<leader>Lr            " Restart LSP

LaTeX SyncTeX

macOS (Skim):

  • Verify Skim preferences: Sync → Custom command
  • Check script path: Use absolute path, no tilde (~)
  • Debug log: tail -f /tmp/inverse_search.log

Arch Linux (Zathura):

  • VimTeX may configure this automatically
  • If needed, configure in ~/.config/zathura/zathurarc: set synctex-editor-command "nvim --headless -c \"VimtexInverseSearch %{line} '%{input}'\""
  • See Installation Guide for detailed setup

Recent Changes

  • Terminal mappings: <leader>T[1,2,3]<leader>T[h,v,f] (consistency with Julia REPL)
  • Julia REPL: --threads=auto enabled
  • File formatting: Single newline at end of file on save
  • Obsidian: <leader>Op pastes image, adds two newlines

See CHANGELOG for complete version history.

Design Principles

  1. Discoverability: Which-key integration
  2. Consistency: British spelling, logical keymap organisation
  3. Research workflows: Academic document preparation, scientific computing
  4. Maintainability: Modular architecture, documented code

License

Provided as-is for educational and personal use.

Note: Requires Neovim 0.12+ (vim.pack). Older versions: use lazy.nvim or packer.nvim.

About

Modern Neovim configuration optimised for academic and scientific workflows with Julia, LaTeX, Quarto, and terminal integration

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors