Skip to content

Instantly share code, notes, and snippets.

@VonHeikemen
VonHeikemen / co2.lua
Last active April 12, 2026 13:51
Coordinate tasks using lua coroutines
local M = {}
local function pack_len(...)
return {n = select('#', ...), ...}
end
function M.run(f)
local t = coroutine.create(f)
local context = {}
@VonHeikemen
VonHeikemen / snack-dashboard.lua
Last active March 22, 2026 02:44
Recreate Neovim's v0.12 intro message in Snack.nvim's dashboard.
---
-- Recreating Neovim's v0.12 intro message in Snacks.nvim's dashboard.
-- Based on echasnovski's fancy intro:
-- https://github.com/neovim/neovim/pull/38378
---
local Snacks = require('snacks')
local version = vim.version()
local fmt = function(str)
" NOTE: Neovim v0.11 or greater is needed
" ============================================================================ "
" === EDITOR SETTINGS === "
" ============================================================================ "
set number
set ignorecase
set smartcase
set hlsearch
-- NOTE: This configuration is meant for Neovim v0.11 or greater
-- Learn about Neovim:
-- https://vonheikemen.github.io/devlog/tools/simple-neovim-config/
-- https://neovim.io/doc/user/lua-guide.html
vim.o.number = true
vim.o.tabstop = 2
vim.o.shiftwidth = 2
vim.o.smartcase = true
@VonHeikemen
VonHeikemen / init.vim
Last active July 21, 2025 01:30
simple neovim config written in vimscript
" vimscript version of the config in this blog post:
" https://vonheikemen.github.io/devlog/tools/simple-neovim-config/
set number
set tabstop=2
set shiftwidth=2
set smartcase
set ignorecase
set nowrap
set nohlsearch
@VonHeikemen
VonHeikemen / cli.lua
Created September 29, 2024 01:01
Template for (small) command line scripts written in lua (5.2)
#! /usr/bin/env lua
local function main(argv)
local name = argv[1] or 'World'
sh.spawn('echo "Hello, %s!"', name)
end
---
-- I/O helper functions
@VonHeikemen
VonHeikemen / init.lua
Last active February 27, 2024 20:09
Minimal configuration of lsp-zero used in the demo https://asciinema.org/a/636643 (doesn't include colorscheme)
local lazypath = vim.fn.stdpath('data') .. '/lazy/lazy.nvim'
-- Auto-install lazy.nvim if not present
if not vim.loop.fs_stat(lazypath) then
print('Installing lazy.nvim....')
vim.fn.system({
'git',
'clone',
'--filter=blob:none',
'https://github.com/folke/lazy.nvim.git',
#! /usr/bin/lua
--[[*
* test case: cmus-notify status playing file path title hola artist qace album ok
*
* installation:
* - Set the status_display_program variable in cmus
* :set status_display_program=/path-to/cmus-notify.lua
*
* - Save the changes using
@VonHeikemen
VonHeikemen / lsp.lua
Last active August 15, 2023 19:00
Primeagen's LSP config without lsp-zero
vim.opt.signcolumn = 'yes'
vim.diagnostic.config({
virtual_text = true,
})
vim.api.nvim_create_autocmd('LspAttach', {
desc = 'LSP keybindings',
callback = function(event)
local opts = {buffer = event.buf}
@VonHeikemen
VonHeikemen / snippet-expansion.lua
Last active July 27, 2025 16:26
enhanced native completion to expand snippets
-- based on u/YungDaVinci work:
-- https://www.reddit.com/r/neovim/comments/ydlgzi/expand_lsp_snippets_with_luasnip_while_using/
vim.api.nvim_create_augroup('user-snippet-expand', {})
vim.api.nvim_create_autocmd('CompleteDone', {
group = 'user-snippet-expand',
desc = 'Expand LSP snippet',
pattern = '*',
callback = function(opts)
local comp = vim.v.completed_item