Skip to content

Instantly share code, notes, and snippets.

@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 December 16, 2023 08:55
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
@VonHeikemen
VonHeikemen / nvchad-setup.lua
Created September 24, 2022 23:58
Separate NvChad's configuration from Neovim's default configuration
local path_sep = vim.loop.os_uname().version:match('Windows') and '\\' or '/'
local join = function(...) return table.concat({...}, path_sep) end
local getpath = function(arg)
local path = vim.fn.stdpath(arg)
return vim.fn.substitute(path, [[\(.*\)\zsnvim]], 'nvchad', '')
end
local user_path = getpath('config')
local data_path = getpath('data')
local chad_core = join(data_path, 'core', 'nvim')
@VonHeikemen
VonHeikemen / astronvim-setup.lua
Last active October 3, 2023 11:36
Separate astronvim's configuration from Neovim's default.
--- For details of usage and explanation see:
--- https://dev.to/vonheikemen/how-to-install-astronvim-without-overriding-your-existing-neovim-configuration-1nke
local path_sep = vim.loop.os_uname().version:match('Windows') and '\\' or '/'
local join = function(...) return table.concat({...}, path_sep) end
local getpath = function(arg)
local path = vim.fn.stdpath(arg)
return vim.fn.substitute(path, [[\(.*\)\zsnvim]], 'astronvim', '')
end
@VonHeikemen
VonHeikemen / init.lua
Last active August 24, 2024 02:42
nvim-lspconfig + nvim-cmp setup
--[[
blogpost:
https://vonheikemen.github.io/devlog/tools/setup-nvim-lspconfig-plus-nvim-cmp/
Dependencies:
LSP:
https://github.com/neovim/nvim-lspconfig
https://github.com/williamboman/mason.nvim (optional)
https://github.com/williamboman/mason-lspconfig.nvim (optional)
@VonHeikemen
VonHeikemen / commit-hash.vim
Last active January 23, 2022 00:48
collect commit hash from vim plugins using vimscript
let s:packpath = expand('~/.local/share/nvim/site/pack/minpac')
let s:hash_dir = expand('~/.local/share/nvim/site/pack/minpac/hashes')
let s:pattern = '/{opt,start}'
function! s:save_hashes() abort
let plugin_dirs = glob(s:packpath .. s:pattern, 1, 1)
if empty(plugin_dirs)
return
endif
@VonHeikemen
VonHeikemen / map_utils.lua
Last active March 27, 2022 16:15
Allows you to use lua functions with `vim.api.nvim_set_keymap` (for neovim 0.6.1 or lower)
local M = {}
local module_name = 'map_utils'
local fn_store = {}
local function register_fn(fn)
table.insert(fn_store, fn)
return #fn_store
end
function M.apply_function(id)