Compare commits

...

38 Commits

Author SHA1 Message Date
Kenneth Benzie (Benie)
d21cd45701 temp! 2024-05-24 11:20:11 +01:00
Kenneth Benzie (Benie)
9d5868304f Add reStructureText snippets file 2024-05-24 11:05:18 +01:00
56beb52997 Simplify clangd command 2024-05-22 21:35:47 +01:00
48ad466bd3 Vanquish ftdetect, long live vim.filetype.add() 2024-05-22 21:29:36 +01:00
4499dee3d6 Move statusline.lua to plugin directory 2024-05-22 21:08:27 +01:00
d75531ae3d Make statusline functions global 2024-05-22 21:06:28 +01:00
Kenneth Benzie (Benie)
9f0d9890fd Ensure all LSP capabilities are broadcast 2024-05-20 11:15:11 +01:00
ccec3232b5 Make it easier to have multiple colorscheme plugins 2024-05-18 14:05:22 +01:00
Kenneth Benzie (Benie)
ed74a5909a Use clangd --completion-style=detailed option 2024-05-17 11:47:18 +01:00
5da8a3c2f6 Move ui.lua to plugin directory 2024-05-14 22:50:55 +01:00
75f9b205bd Move build.lua to plugin directory 2024-05-14 22:45:48 +01:00
f5ab986397 Set vim.g.mapleader as early as possible 2024-05-14 22:45:20 +01:00
4ee7596ffc Move autocmds.lua to plugin directory 2024-05-14 22:42:09 +01:00
19d7ac86f2 Move netrw.lua to plugin directory 2024-05-14 22:41:06 +01:00
3ff031990a Move commands.lua to plugin directory 2024-05-14 22:39:12 +01:00
9de31c4c59 Move settings.lua to plugin directory 2024-05-14 22:36:48 +01:00
500e786a70 Move mappings.lua to plugin directory 2024-05-14 22:35:41 +01:00
94c332368f Make most generic mappings silent 2024-05-14 22:34:49 +01:00
eade51e5b9 Add go ftplugin 2024-05-14 22:17:56 +01:00
61e4807f55 Add markdown-inline tree-sitter 2024-05-14 21:42:16 +01:00
Kenneth Benzie (Benie)
f717fd0468 Add Python debug snippet 2024-05-09 11:50:36 +01:00
5f2c45050c Add mapping for :ClangdSwitchSourceHeader LSP extension 2024-05-03 11:40:19 +01:00
3e94d25caf Add some more kaomoji snippets 2024-05-02 23:39:08 +01:00
Kenneth Benzie (Benie)
06c8f8a751 Add ac/ic text objects for outer/inner class 2024-05-02 16:15:54 +01:00
d4228e37b8 Keep tweaking noice 2024-04-29 21:25:27 +01:00
e3d4651062 Add Python main snippet 2024-04-23 22:52:06 +01:00
09c785eee9 Set a limit to how wide the completion menu can be 2024-04-20 12:37:31 +01:00
63d2a3ffd3 Add not about builtin snippets in v0.10.0 2024-04-19 21:01:07 +01:00
b5adbd3343 Add tabline highlight group overrides 2024-04-18 18:56:39 +01:00
Kenneth Benzie (Benie)
985df79d1a Use telescope.builtin Lua functions in mappings 2024-04-17 12:21:26 +01:00
c190e42da5 Make sure the textwidth to 72 in gitcommit filetype 2024-04-16 00:07:09 +01:00
8d93cbdf57 Switch to mason.nvim fork with virtualenv fallback 2024-04-15 23:45:30 +01:00
1ba816fcf8 Of course pyright is an npm package 2024-04-15 21:52:48 +01:00
9d5b798385 Cleanup conditional language server installs 2024-04-15 21:52:48 +01:00
727ebc81a8 Handle mason.nvim install deps not existing 2024-04-15 21:52:48 +01:00
a3024efb61 Fix mapping conflict 2024-04-13 13:42:09 +01:00
0b9c2765d3 Make sure builtin UI config is actually loaded 2024-04-13 13:41:13 +01:00
a655cbe3d9 Add title to diagnostics floating window 2024-04-13 13:40:49 +01:00
31 changed files with 202 additions and 85 deletions

View File

@@ -1 +0,0 @@
autocmd BufNewFile,BufReadPost CMakeCache.txt set filetype=cmakecache

View File

@@ -1,2 +0,0 @@
" Force *.def to C++ filetype for LLVM
au BufNewFile,BufReadPost *.def set filetype=cpp

View File

@@ -1,3 +0,0 @@
" Set .ll files to LLVM IR filetype
au BufNewFile,BufReadPost *.ll set filetype=llvm
au BufNewFile,BufReadPost *.test set filetype=llvm

View File

@@ -1,3 +0,0 @@
" Force *.md to markdown filetype
au BufNewFile,BufReadPost *.md set filetype=markdown
au BufNewFile,BufReadPost *.ronn set filetype=markdown

View File

@@ -1,2 +0,0 @@
" Force *.cl to OpenCL C filetype
au BufNewFile,BufReadPost *.cl set filetype=opencl

View File

@@ -1,3 +0,0 @@
" Force lit.cfg/lit.local.cfg to be Python
au BufNewFile,BufReadPost lit.cfg set filetype=python
au BufNewFile,BufReadPost lit.local.cfg set filetype=python

View File

@@ -1 +0,0 @@
autocmd BufNewFile,BufReadPost */requirements.txt set filetype=requirements

View File

@@ -1,2 +0,0 @@
" Force *.td to tablegen filetype
au BufNewFile,BufReadPost *.td set filetype=tablegen

View File

@@ -1,3 +0,0 @@
" Force .enter/.exit to be zsh
au BufNewFile,BufReadPost .enter set filetype=zsh
au BufNewFile,BufReadPost .exit set filetype=zsh

View File

@@ -1,4 +1,5 @@
vim.opt.spell = true
vim.opt.textwidth = 72
-- Auto-wrap text using textwidth
vim.opt.formatoptions:append('t')

6
after/ftplugin/go.lua Normal file
View File

@@ -0,0 +1,6 @@
vim.opt.expandtab = false
vim.opt.tabstop = 4
vim.opt.shiftwidth = 4
vim.opt.softtabstop = 4
vim.wo.listchars = 'extends:»,nbsp:⦸,precedes:«,tab: ,trail:·'
vim.bo.formatprg = 'gofmt'

View File

@@ -1,10 +1,5 @@
require('settings')
require('mappings')
require('commands')
require('netrw')
require('autocmds')
require('statusline')
require('build')
vim.g.mapleader = ' '
vim.g.maplocalleader = ' '
local lazypath = vim.fn.stdpath('data') .. '/lazy/lazy.nvim'
if not vim.loop.fs_stat(lazypath) then

View File

@@ -1,4 +1,4 @@
return {
local kanagawa = {
'rebelot/kanagawa.nvim',
config = function()
local kanagawa = require('kanagawa')
@@ -25,9 +25,15 @@ return {
kanagawa.load('dragon')
-- Override highlight groups
vim.cmd.highlight('TabLine', 'guifg=#949494', 'guibg=' .. dragon.ui.bg_m3)
vim.cmd.highlight('TabLineFill', 'guibg=' .. dragon.ui.bg_gutter)
vim.cmd.highlight('TabLineSel', 'guifg=#c8c093', 'guibg=' .. dragon.ui.bg_m3)
vim.cmd.highlight('WinSeparator', 'guifg=' .. dragon.ui.bg_m3, 'guibg=' .. dragon.ui.bg_m3)
vim.cmd.highlight('MsgSeparator', 'guifg=' .. dragon.ui.bg_m3, 'guibg=' .. dragon.ui.bg_m3)
vim.cmd.highligh('TreesitterContext', 'guibg=' .. dragon.ui.bg_gutter)
vim.cmd.highlight('link zshTodo Comment')
end
}
return kanagawa

View File

@@ -1,8 +1,48 @@
-- Language servers
local ensure_installed = {
'clangd', -- C/C++
'lua_ls', -- Lua
'opencl_ls', -- OpenCL
}
if vim.fn.executable('npm') == 1 then
local ensure_install_from_npm = {
'ansiblels', -- Ansible
'bashls', -- Bash
'docker_compose_language_service', -- Docker Compose
'dockerls', -- Dockerfile
'html', -- HTML
'jsonls', -- JSON
'pyright', -- Python
'vimls', -- VimScript
'yamlls', -- YAML
}
for _, package in ipairs(ensure_install_from_npm) do
table.insert(ensure_installed, package)
end
end
if vim.fn.executable('pip') == 1 then
local ensure_install_from_pip = {
'cmake', -- CMake
'esbonio', -- Sphinx
'ruff_lsp', -- Python
}
for _, package in ipairs(ensure_install_from_pip) do
table.insert(ensure_installed, package)
end
end
if vim.fn.has('win32') == 1 then
table.insert(ensure_installed, 'powershell_es')
end
return {
'neovim/nvim-lspconfig',
dependencies = {
-- Language server management plugins
'williamboman/mason.nvim',
-- 'williamboman/mason.nvim',
'kbenzie/mason.nvim',
'williamboman/mason-lspconfig.nvim',
-- Completion sources plugins
@@ -32,40 +72,35 @@ return {
},
config = function()
local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities = vim.tbl_deep_extend(
'force', capabilities, require('cmp_nvim_lsp').default_capabilities())
require('mason').setup()
require('mason-lspconfig').setup({
automatic_installation = false,
ensure_installed = {
-- Language servers
'ansiblels', -- Ansible
'bashls', -- Bash
'clangd', -- C/C++
'cmake', -- CMake
'docker_compose_language_service', -- Docker Compose
'dockerls', -- Dockerfile
'esbonio', -- Sphinx
'html', -- HTML
'jsonls', -- JSON
'lemminx', -- XML
'lua_ls', -- Lua
'opencl_ls', -- OpenCL
'powershell_es', -- Powershell
'pyright', -- Python
'ruff_lsp', -- Python
'vimls', -- VimScript
'yamlls', -- YAML
},
ensure_installed = ensure_installed,
handlers = {
-- Default handler, sets up everything unless a custom language server
-- setup handler is defined below
function(server_name)
require('lspconfig')[server_name].setup({})
require('lspconfig')[server_name].setup({
capabilities = capabilities,
})
end,
['clangd'] = function()
require('lspconfig').clangd.setup({
capabilities = capabilities,
cmd = { 'clangd', '--completion-style=detailed' }
})
end,
['lua_ls'] = function()
require('neodev').setup()
require('lspconfig').lua_ls.setup({
capabilities = capabilities,
settings = {
Lua = {
diagnostics = {
@@ -79,6 +114,7 @@ return {
['pyright'] = function()
require('lspconfig').pyright.setup({
capabilities = capabilities,
settings = {
pyright = {
disableOrganizeImports = true, -- Use ruff import sorter instead
@@ -118,6 +154,20 @@ return {
{ name = 'git' },
},
formatting = {
format = function(entry, vim_item)
-- Set a limit to how wide the completion menu can be
local winwidth = vim.fn.winwidth(vim.api.nvim_get_current_win())
local menuwidth = math.min(winwidth / 2, 70)
if menuwidth < 70 then
vim_item.menu = ''
vim_item.kind = ''
end
vim_item.abbr = string.sub(vim_item.abbr, 1, menuwidth)
return vim_item
end
},
window = {
completion = cmp.config.window.bordered(),
documentation = cmp.config.window.bordered(),
@@ -145,8 +195,8 @@ return {
vim.keymap.set('n', 'gr', tb.lsp_references, opts)
vim.keymap.set('n', '<leader>ic', tb.lsp_incoming_calls, opts)
vim.keymap.set('n', '<leader>oc', tb.lsp_outgoing_calls, opts)
vim.keymap.set('n', '<leader>ds', tb.lsp_document_symbols, opts)
vim.keymap.set('n', '<leader>ws', tb.lsp_workspace_symbols, opts)
vim.keymap.set('n', '<leader>ss', tb.lsp_document_symbols, opts)
vim.keymap.set('n', '<leader>sw', tb.lsp_workspace_symbols, opts)
-- Refactoring mappings
vim.keymap.set('n', '<leader>rn', vim.lsp.buf.rename, opts)
@@ -159,6 +209,10 @@ return {
-- Format whole buffer mapping
vim.keymap.set('n', '<leader>gq', vim.lsp.buf.format, opts)
-- Swtich file using clangd extension
-- TODO: limit this to only filetypes supported by clangd
vim.keymap.set('n', '<leader>sf', ':ClangdSwitchSourceHeader<CR>', { silent = true })
end
})

View File

@@ -7,13 +7,12 @@ return {
config = function()
require('trouble').setup({})
local opts = { remap = false }
vim.keymap.set('n', '<leader>tr', function()
require('trouble').toggle()
end, opts)
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts)
vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts)
vim.keymap.set('n', '<leader>ds', vim.diagnostic.open_float, opts)
vim.keymap.set('n', '<leader>dq', vim.diagnostic.setqflist, opts)
vim.keymap.set('n', '<leader>dq', function()
require('trouble').toggle()
end, opts)
end
}
}

View File

@@ -1,4 +1,5 @@
return {
-- TODO: v0.10.0 might have builtins snippets?
'L3MON4D3/LuaSnip',
build = 'make install_jsregexp',
config = function()

View File

@@ -5,9 +5,11 @@ return {
'nvim-telescope/telescope-fzy-native.nvim',
'nvim-tree/nvim-web-devicons',
'axkirillov/easypick.nvim',
'catgoose/telescope-helpgrep.nvim',
},
config = function()
local telescope = require('telescope')
local actions = require('telescope.actions')
telescope.setup({
defaults = {
mappings = {
@@ -20,23 +22,39 @@ return {
['<C-s>'] = 'select_horizontal',
['<C-h>'] = 'preview_scrolling_left',
['<C-l>'] = 'preview_scrolling_right',
}
},
},
layout_config = {
height = 0.7,
}
},
},
extensions = {
helpgrep = {
mappings = {
i = {
["<CR>"] = actions.select_default,
["<C-v>"] = actions.select_vertical,
},
n = {
["<CR>"] = actions.select_default,
["<C-s>"] = actions.select_horizontal,
}
},
},
},
})
telescope.load_extension('fzy_native')
-- TODO: Add more mappings?
local builtin = require('telescope.builtin')
local opts = { noremap = true }
vim.keymap.set('n', '<leader>gF', ':Telescope find_files<CR>', opts)
vim.keymap.set('n', '<leader>gf', ':Telescope git_files<CR>', opts)
vim.keymap.set('n', '<leader>gg', ':Telescope live_grep<CR>', opts)
vim.keymap.set('n', '<leader>rg', ':Telescope grep_string<CR>', opts)
vim.keymap.set('n', '<leader>gb', ':Telescope buffers<CR>', opts)
vim.keymap.set('n', '<leader>gh', ':Telescope help_tags<CR>', opts)
vim.keymap.set('n', '<leader>gF', builtin.find_files, opts)
vim.keymap.set('n', '<leader>gf', builtin.git_files, opts)
vim.keymap.set('n', '<leader>gg', builtin.live_grep, opts)
vim.keymap.set('n', '<leader>rg', builtin.grep_string, opts)
vim.keymap.set('n', '<leader>gb', builtin.buffers, opts)
vim.keymap.set('n', '<leader>ht', builtin.help_tags, opts)
vim.keymap.set('n', '<leader>gh', require('telescope-helpgrep').live_grep, opts)
vim.keymap.set('n', '<leader>bl', builtin.current_buffer_fuzzy_find, opts)
require('easypick').setup({
pickers = { },

View File

@@ -48,6 +48,7 @@ return {
'lua',
'make',
'markdown',
'markdown_inline',
'meson',
'ninja',
'objc',
@@ -79,6 +80,9 @@ return {
lookahead = true,
-- include_surrounding_whitespace = true,
keymaps = {
-- Class text objects
['ac'] = '@class.outer',
['ic'] = '@class.inner',
-- Function text objects
['af'] = '@function.outer',
['if'] = '@function.inner',

View File

@@ -22,6 +22,7 @@ local noice = {
signature = { enable = false },
message = { enable = false },
},
signature = { enabled = false },
})
-- Override highlight groups

19
plugin/filetype.lua Normal file
View File

@@ -0,0 +1,19 @@
vim.filetype.add({
extension = {
cl = 'opencl',
def = 'cpp',
ll = 'llvm',
md = 'markdown',
ronn = 'markdown',
td = 'tablegen',
test = 'llvm',
},
filename = {
['.enter'] = 'zsh',
['.exit'] = 'zsh',
['CMakeCache.txt'] = 'cmakecache',
['lit.cfg'] = 'python',
['lit.local.cfg'] = 'python',
['requirements.txt'] = 'requirements',
},
})

View File

@@ -1,41 +1,40 @@
vim.g.mapleader = ' '
local opts = { remap = false, silent = true }
-- Quick write
vim.keymap.set('n', '<leader>w', ':w!<CR>', { remap = false })
vim.keymap.set('n', '<leader>w', ':w!<CR>', opts)
-- Treat long lines as line containing breaks
vim.keymap.set('n', 'j', 'gj', { remap = false })
vim.keymap.set('n', 'k', 'gk', { remap = false })
vim.keymap.set('n', 'j', 'gj', opts)
vim.keymap.set('n', 'k', 'gk', opts)
vim.keymap.set('n', '<leader>tn', ':tabnew<Space>', { remap = false })
vim.keymap.set('n', '<leader>tc', ':tabclose<CR>', { remap = false })
vim.keymap.set('n', '<leader>to', ':tabonly<CR>', { remap = false })
vim.keymap.set('n', '<leader>tm', ':tabmove<Space>', { remap = false })
vim.keymap.set('n', '<leader>tc', ':tabclose<CR>', opts)
vim.keymap.set('n', '<leader>to', ':tabonly<CR>', opts)
-- Quickly access spelling menu
vim.keymap.set('i', '<C-s>', '<C-g>u<C-X>s', { remap = false })
vim.keymap.set('n', '<C-s>', 'i<C-g>u<C-X>s', { remap = false })
vim.keymap.set('i', '<C-s>', '<C-g>u<C-X>s', opts)
vim.keymap.set('n', '<C-s>', 'i<C-g>u<C-X>s', opts)
-- Clear search highlights
vim.keymap.set('n', '<leader><Space>', ':nohlsearch<CR>', { remap = false })
vim.keymap.set('n', '<leader><Space>', ':nohlsearch<CR>', opts)
-- Disable 'Q' from opening Ex mode
vim.keymap.set('n', 'Q', '<nop>', { remap = false })
vim.keymap.set('n', 'Q', '<nop>', opts)
-- System clipboard yank/put
vim.keymap.set('', '<leader>y', '"+y', { remap = false })
vim.keymap.set('', '<leader>Y', '"+Y', { remap = false })
vim.keymap.set('', '<leader>p', '"+p', { remap = false })
vim.keymap.set('', '<leader>P', '"+P', { remap = false })
vim.keymap.set('', '<leader>y', '"+y', opts)
vim.keymap.set('', '<leader>Y', '"+Y', opts)
vim.keymap.set('', '<leader>p', '"+p', opts)
vim.keymap.set('', '<leader>P', '"+P', opts)
-- Undo neovim's default mapping of Y to y$
vim.cmd.unmap('Y')
-- Make nvim :terminal more like vim :terminal
vim.keymap.set('t', '<C-w>N', '<C-\\><C-n>', { remap = true })
vim.keymap.set('t', '<C-w>N', '<C-\\><C-n>', opts)
-- Mappings to make navigating :Termdebug
local opts = { remap = false, silent = true }
vim.keymap.set('n', '<C-w><C-g>', ':Gdb<CR>:startinsert<CR>', opts)
vim.keymap.set('n', '<C-w><C-e>', ':Program<CR>', opts)
vim.keymap.set('n', '<C-w><C-s>', ':Source<CR>', opts)

View File

@@ -109,7 +109,7 @@ end
-- Define active statusline, this statusline is dynamic with StatusLineLight
-- being updated based on the current mode and only used for current buffer.
function statusline.active()
function _G.statusline_active()
local mode = get_mode()
if vim.o.buftype == 'help' then
if mode == 'Normal' then mode = 'Help' end
@@ -138,7 +138,7 @@ function statusline.active()
return generic('StatusLineLight', mode, true)
end
function statusline.inactive()
function _G.statusline_inactive()
local mode = modes[vim.fn.char2nr(vim.fn.mode())].name
local line = ''
if vim.o.buftype == 'help' then
@@ -169,7 +169,7 @@ vim.api.nvim_create_autocmd({ 'BufEnter', 'WinEnter', 'BufWinEnter' }, {
pattern = '*',
group = group,
callback = function()
vim.cmd.setlocal("statusline=%{%v:lua.require('statusline').active()%}")
vim.cmd.setlocal("statusline=%{%v:lua.statusline_active()%}")
end
})
@@ -178,7 +178,7 @@ vim.api.nvim_create_autocmd({ 'BufLeave', 'WinLeave' }, {
pattern = '*',
group = group,
callback = function()
vim.cmd.setlocal("statusline=%{%v:lua.require('statusline').inactive()%}")
vim.cmd.setlocal("statusline=%{%v:lua.statusline_inactive()%}")
end
})

View File

@@ -16,6 +16,7 @@ vim.lsp.handlers['textDocument/signatureHelp'] = vim.lsp.with(
vim.diagnostic.config({
float = {
border = 'rounded',
title = 'Diagnostics',
},
virtual_text = false,
})

View File

@@ -1,7 +1,19 @@
# Global SnipMate snippets
snippet joy
(◦U ◡ U◦)
snippet shrug
¯\_(ツ)_/¯
snippet confuse
(ノ*・_・)ノ
snippet tableflip
(╯°▪°)╯︵┻━┻
snippet cry
(ㅠ﹏ㅠ)
snippet think
(╭ರ_•́)

15
snippets/python.snippets Normal file
View File

@@ -0,0 +1,15 @@
# Python SnipMate snippets
snippet main
def main():
${0:pass}
if __name__ == '__main__':
try:
main()
except KeyboardInterrupt:
exit(130)
snippet debug
import ipdb; ipdb.set_trace()

6
snippets/rst.snippets Normal file
View File

@@ -0,0 +1,6 @@
# reStructuredText snippets
snippet code
.. code-block:: ${1:language}
$0