summaryrefslogtreecommitdiff
path: root/.config/nvim
diff options
context:
space:
mode:
Diffstat (limited to '.config/nvim')
-rw-r--r--.config/nvim/init.lua181
-rw-r--r--.config/nvim/lua/snippets.lua190
2 files changed, 5 insertions, 366 deletions
diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua
index 220c341..67bfa39 100644
--- a/.config/nvim/init.lua
+++ b/.config/nvim/init.lua
@@ -166,84 +166,24 @@ end
require 'paq' {
'folke/todo-comments.nvim',
'folke/tokyonight.nvim',
- 'hrsh7th/cmp-nvim-lsp',
- 'hrsh7th/cmp-path',
- 'hrsh7th/nvim-cmp',
'kylechui/nvim-surround',
- 'L3MON4D3/LuaSnip',
'luckasRanarison/tree-sitter-hypr',
'Mango0x45/tree-sitter-gsp',
- 'mattn/emmet-vim',
- 'neovim/nvim-lspconfig',
'ngalaiko/tree-sitter-go-template',
'nvim-lua/plenary.nvim',
- 'nvim-telescope/telescope.nvim',
- 'nvim-telescope/telescope-ui-select.nvim',
- { 'nvim-treesitter/nvim-treesitter', build = ':TSUpdate' },
+ {
+ 'nvim-treesitter/nvim-treesitter',
+ branch = 'master',
+ build = ':TSUpdate',
+ },
'nvim-treesitter/nvim-treesitter-textobjects',
- 'saadparwaiz1/cmp_luasnip',
'savq/paq-nvim',
'wellle/targets.vim',
}
--- emmet-vim
-vim.g.user_emmet_install = false
-
-- tokyonight.nvim
vim.cmd.colorscheme 'tokyonight-night'
--- telescope.nvim
-local telescope = require 'telescope'
-local tsactions = require 'telescope.actions'
-local tsbuiltin = require 'telescope.builtin'
-local tsthemes = require 'telescope.themes'
-
-telescope.setup {
- defaults = {
- scroll_strategy = 'limit',
- path_display = { 'filename_first' },
- get_status_text = function(_) return '' end,
- mappings = {
- i = {
- ['<Esc>'] = {
- tsactions.close,
- type = 'action',
- opts = { nowait = true, silent = true },
- },
- ['<C-j>'] = {
- tsactions.move_selection_next,
- type = 'action',
- opts = { nowait = true, silent = true },
- },
- ['<C-k>'] = {
- tsactions.move_selection_previous,
- type = 'action',
- opts = { nowait = true, silent = true },
- },
- },
- },
- },
- extensions = {
- ['ui-select'] = { tsthemes.get_dropdown() },
- }
-}
-
-pcall(telescope.load_exetension, 'fzf')
-pcall(telescope.load_exetension, 'ui-select')
-
-vim.keymap.set('n', '<Leader>ff', tsbuiltin.find_files,
- { desc = '[F]ind [F]iles' })
-vim.keymap.set('n', '<Leader>fh', tsbuiltin.help_tags,
- { desc = '[F]ind [H]elp' })
-vim.keymap.set('n', '<Leader>fg', tsbuiltin.live_grep,
- { desc = '[F]ind [G]rep' })
-vim.keymap.set('n', '<Leader>/', function()
- tsbuiltin.current_buffer_fuzzy_find(tsthemes.get_dropdown {
- winblend = 10,
- previewer = false,
- })
-end, { desc = 'Fuzzily search in current buffer' })
-
-- todo-comments.nvim
require('todo-comments').setup {
signs = false,
@@ -400,116 +340,5 @@ require('nvim-surround').setup {
}
}
--- nvim-lspconfig
-local lsp = require 'lspconfig'
-local caps = require('cmp_nvim_lsp').default_capabilities()
-
-lsp.clangd.setup {
- cmd = { 'clangd', '-header-insertion=never' },
- capabilities = caps,
-}
-lsp.gopls.setup {
- capabilities = caps,
-}
-lsp.rust_analyzer.setup {
- capabilities = caps,
-}
-lsp.templ.setup {
- capabilities = caps,
-}
-lsp.ts_ls.setup {
- capabilities = caps,
-}
-lsp.lua_ls.setup {
- settings = {
- Lua = {
- runtime = {
- version = 'LuaJIT',
- },
- diagnostics = {
- globals = {
- 'vim',
- 'require',
- },
- },
- workspace = {
- library = vim.api.nvim_get_runtime_file('', true),
- },
- telemetry = {
- enable = false,
- },
- },
- },
- capabilities = caps,
-}
-
-vim.api.nvim_create_autocmd('LspAttach', {
- group = vim.api.nvim_create_augroup('mango-lsp-config', { clear = true }),
- callback = function(ev)
- vim.diagnostic.disable()
- vim.bo[ev.buf].omnifunc = 'v:lua.vim.lsp.omnifunc'
- vim.keymap.set('n', 'gK', vim.lsp.buf.hover,
- { buffer = ev.buf, desc = 'View symbol hover information' })
- vim.keymap.set('n', 'gd', vim.lsp.buf.definition,
- { buffer = ev.buf, desc = 'Goto [D]efinition' })
- vim.keymap.set('n', 'gi', vim.lsp.buf.implementation,
- { buffer = ev.buf, desc = 'Goto [I]mplementation' })
- vim.keymap.set('n', 'gr', vim.lsp.buf.rename,
- { buffer = ev.buf, desc = '[R]ename symbol' })
- vim.keymap.set('n', 'gt', vim.lsp.buf.type_definition,
- { buffer = ev.buf, desc = 'Goto [T]ype definition' })
- end,
-})
-
--- nvim-cmp & luasnip
-local cmp = require 'cmp'
-local luasnip = require 'luasnip'
-
-luasnip.config.setup {
- history = true,
- updateevents = 'TextChanged,TextChangedI',
-}
-require 'snippets'
-
-cmp.setup {
- snippet = {
- expand = function(args)
- luasnip.lsp_expand(args.body)
- end,
- },
- completion = { completeopt = 'menu,menuone,noinsert' },
- mapping = cmp.mapping.preset.insert {
- ['<CR>'] = cmp.mapping.confirm { select = true },
- ['<C-Space>'] = cmp.mapping.complete(),
- ['<C-p>'] = cmp.mapping.scroll_docs(-1),
- ['<C-n>'] = cmp.mapping.scroll_docs(1),
- ['<C-c>'] = cmp.mapping.abort(),
- ['<C-j>'] = cmp.mapping.select_next_item({
- behaviour = cmp.SelectBehavior.Select,
- }),
- ['<C-k>'] = cmp.mapping.select_prev_item({
- behaviour = cmp.SelectBehavior.Select,
- }),
- ['<C-l>'] = cmp.mapping(function()
- if luasnip.expand_or_locally_jumpable() then
- luasnip.expand_or_jump()
- end
- end, {'i', 's'}),
- ['<C-h>'] = cmp.mapping(function()
- if luasnip.expand_or_locally_jumpable(-1) then
- luasnip.expand_or_jump(-1)
- end
- end, {'i', 's'}),
- },
- sources = {
- { name = 'nvim_lsp' },
- { name = 'luasnip' },
- { name = 'path' },
- },
- experimental = {
- ghost_text = true,
- },
-}
-
-- Pipe
require('pipe')
diff --git a/.config/nvim/lua/snippets.lua b/.config/nvim/lua/snippets.lua
deleted file mode 100644
index 185019c..0000000
--- a/.config/nvim/lua/snippets.lua
+++ /dev/null
@@ -1,190 +0,0 @@
-local ls = require('luasnip')
-local ts_utils = require('nvim-treesitter.ts_utils')
-local ts_locals = require('nvim-treesitter.locals')
-
-local c = ls.choice_node
-local d = ls.dynamic_node
-local f = ls.function_node
-local i = ls.insert_node
-local s = ls.s
-local sn = ls.snippet_node
-local t = ls.text_node
-local fmt = require('luasnip.extras.fmt').fmt
-
-local function same(index)
- return f(function(args)
- return args[1]
- end, { index })
-end
-
-ls.add_snippets('lua', {
- s('req', fmt([[local {} = require('{}')]], {
- f(function(name)
- local xs = vim.split(name[1][1], '.', { plain = true })
- return xs[#xs] or ''
- end, { 1 }),
- i(1),
- })),
-})
-
-local function is_ptr(str)
- return string.find(str, '*', 1, true) ~= nil
-end
-
-local function is_num(str)
- return vim.regex(
- '\\v^('
- .. 'u?int(8|16|32|64)?'
- .. '|byte'
- .. '|complex(64|128)'
- .. '|float(32|64)'
- .. '|rune'
- .. '|uintptr'
- .. ')$'
- ):match_str(str) ~= nil
-end
-
-local transforms = {
- bool = 'false',
- string = '""',
- error = 'err',
- [is_num] = '0',
- [is_ptr] = 'nil',
-}
-
-local transform = function(text)
- local condition_matches = function(condition, ...)
- if type(condition) == 'string' then
- return condition == text
- else
- return condition(...)
- end
- end
-
- for condition, result in pairs(transforms) do
- if condition_matches(condition, text) then
- return t(result)
- end
- end
-
- return t(text .. '{}')
-end
-
-local handlers = {
- parameter_list = function(node)
- local result = {}
-
- local count = node:named_child_count()
- for idx = 0, count - 1 do
- local matching_node = node:named_child(idx)
- local type_node = matching_node:field('type')[1]
- table.insert(result, transform(
- vim.treesitter.get_node_text(type_node, 0)
- ))
- if idx ~= count - 1 then
- table.insert(result, t({ ', ' }))
- end
- end
-
- return result
- end,
-
- type_identifier = function(node)
- local text = vim.treesitter.get_node_text(node, 0)
- return { transform(text) }
- end,
-}
-
-local function_node_types = {
- function_declaration = true,
- method_declaration = true,
- func_literal = true,
-}
-
-local function go_result_type()
- local cursor_node = ts_utils.get_node_at_cursor()
- if cursor_node == nil then
- print('Unable to find position')
- return t('')
- end
- local scope = ts_locals.get_scope_tree(cursor_node, 0)
-
- local function_node
- for _, v in ipairs(scope) do
- if function_node_types[v:type()] then
- function_node = v
- break
- end
- end
-
- if not function_node then
- print('Not inside of a function')
- return t('')
- end
-
- local query = vim.treesitter.query.parse('go', [[
- [
- (method_declaration result: (_) @id)
- (function_declaration result: (_) @id)
- (func_literal result: (_) @id)
- ]
- ]])
- for _, node in query:iter_captures(function_node, 0) do
- if handlers[node:type()] then
- return handlers[node:type()](node)
- end
- end
-end
-
-ls.add_snippets('go', {
- s(
- 'ife',
- fmt(
- [[
- if err != nil {
- return <>
- }
- ]],
- {
- d(1, function()
- return sn(nil, go_result_type())
- end),
- },
- {
- delimiters = '<>',
- }
- )
- ),
-})
-
-
-ls.add_snippets('c', {
- s(
- 'gu',
- fmt(
- [[
- #ifndef {}_H
- #define {}_H
-
- {}
-
- #endif /* !{}_H */
- ]],
- { i(1), same(1), i(0), same(1) }
- )
- ),
-})
-
-ls.add_snippets('tex', {
- s(
- 'scope',
- fmt(
- [[
- \begin{{{}}}
- {}
- \end{{{}}}
- ]],
- { i(1), i(0), same(1) }
- )
- ),
-})