diff --git a/pkgs/nattovim/init.lua b/pkgs/nattovim/init.lua index dfdcced..2899fc5 100644 --- a/pkgs/nattovim/init.lua +++ b/pkgs/nattovim/init.lua @@ -1,14 +1,13 @@ ---i do not really maintain this anymore since emacs is my main editor now - +-- i do not really maintain this anymore since emacs is my main editor now vim.api.nvim_set_option("termguicolors", true) local bind = vim.keymap.set ---SETTINGS +-- SETTINGS vim.o.cmdheight = 1 vim.o.modifiable = true vim.o.cursorline = true vim.o.hidden = true -vim.o.encoding= "utf-8" +vim.o.encoding = "utf-8" vim.o.pumheight = 10 vim.o.fileencoding = "utf-8" vim.o.ruler = true @@ -33,7 +32,7 @@ vim.o.clipboard = "unnamedplus" vim.o.completeopt = "menuone,noselect" vim.o.cursorcolumn = true ---KEYBINDS +-- KEYBINDS --[[ A relic of the past @@ -67,92 +66,83 @@ bind('n', "", "k") bind('n', "", "l") bind('n', "", ":vsplit") bind('n', "", ":split") -]]-- - ---RUN AND REPL (using vim-floaterm) +]] -- function _G.CompileRun() + local Terminal = require('toggleterm.terminal').Terminal local file = vim.fn.expand('%:p') local noext = vim.fn.expand('%:p:r') local commandMap = { - ['java'] = 'java ' .. file, - ['lisp'] = 'clisp ' .. file, - ['python'] = 'python3 ' .. file, - ['c'] = 'gcc ' .. file .. ' -o ' .. noext .. ' -Wno-unused-result ' .. ' && ' .. noext .. ' && rm ' .. noext, - ['rust'] = 'rustc ' .. file .. ' -o ' .. noext .. ' && ' .. noext .. ' && rm ' .. noext, - ['cpp'] = 'g++ -std=c++17 ' .. file .. ' -o ' .. noext .. ' -Wno-unused-result ' .. ' && ' .. noext .. ' && rm ' .. noext, - ['haskell'] = 'runhaskell ' .. file, - ['sh'] = 'sh ' .. file, - ['javascript']= 'node ' .. file, - ['typescript']= 'tsc ' .. file .. ' && node ' .. noext .. '.js && rm ' .. noext .. '.js' + ['java'] = 'java ' .. file, + ['lisp'] = 'clisp ' .. file, + ['python'] = 'python3 ' .. file, + ['c'] = 'gcc ' .. file .. ' -o ' .. noext .. ' -Wno-unused-result ' .. + ' && ' .. noext .. ' && rm ' .. noext, + ['rust'] = 'rustc ' .. file .. ' -o ' .. noext .. ' && ' .. noext .. + ' && rm ' .. noext, + ['cpp'] = 'g++ ' .. file .. ' -o ' .. noext .. ' -Wno-unused-result ' .. + ' && ' .. noext .. ' && rm ' .. noext, + ['cc'] = 'g++ ' .. file .. ' -o ' .. noext .. ' -Wno-unused-result ' .. + ' && ' .. noext .. ' && rm ' .. noext, + ['haskell'] = 'runhaskell ' .. file, + ['sh'] = 'sh ' .. file, + ['javascript'] = 'node ' .. file, + ['typescript'] = 'tsc ' .. file .. ' && node ' .. noext .. '.js && rm ' .. + noext .. '.js' } filetype = vim.api.nvim_buf_get_option(0, "filetype") - if commandMap[filetype] ~= nil then vim.cmd("FloatermNew --autoclose=0 " .. commandMap[filetype]) end + if commandMap[filetype] ~= nil then + Terminal:new({cmd = commandMap[filetype], close_on_exit = false}) + :toggle() + end end - + function _G.Repl() + local Terminal = require('toggleterm.terminal').Terminal local file = vim.fn.expand('%:p') local commandMap = { - ['lisp'] = 'clisp', - ['python'] = 'python3', - ['haskell'] = 'ghci ' .. file, - ['sh'] = 'sh', - ['javascript']= 'node', - ['typescript']= 'ts-node', - ['nix'] = 'nix repl', - ['lua'] = 'lua' + ['lisp'] = 'clisp', + ['python'] = 'python3', + ['haskell'] = 'ghci ' .. file, + ['sh'] = 'sh', + ['javascript'] = 'node', + ['typescript'] = 'ts-node', + ['nix'] = 'nix repl', + ['lua'] = 'lua' } filetype = vim.api.nvim_buf_get_option(0, "filetype") - if commandMap[filetype] ~= nil then vim.cmd("FloatermNew " .. commandMap[filetype]) end + if commandMap[filetype] ~= nil then + Terminal:new({cmd = commandMap[filetype]}):toggle() + end end bind('n', "", ":call v:lua.CompileRun()") bind('n', "", ":call v:lua.Repl()") +-- PLUGINS CONFIG - ---PLUGINS CONFIG - ---nvim-tree.lua +-- nvim-tree.lua require'nvim-tree'.setup { - diagnostics = { - enable = true, - }, - update_focused_file = { - enable = true, - update_root = true, - }, - renderer = { - highlight_opened_files = "all", - highlight_git = true - }, - git = { - enable = true, - ignore = true, - show_on_dirs = true, - }, - actions = { - open_file = { - quit_on_open = true, - resize_window = true, - window_picker = { - enable = true, - exclude = { - filetype = { "notify", "packer", "qf", "diff", "fugitive", "fugitiveblame" }, - buftype = { "nofile", "terminal", "help" }, - }, - }, - }, - }, - view = { - adaptive_size = true, - mappings = { - list = { - { key = "e", action = "" }, - { key = "m", action = "" }, - { key = "f", action = "rename_basename" } - }, + diagnostics = {enable = true}, + update_focused_file = {enable = true, update_root = true}, + renderer = {highlight_opened_files = "all", highlight_git = true}, + git = {enable = true, ignore = true, show_on_dirs = true}, + actions = { + open_file = { + quit_on_open = true, + resize_window = true, + window_picker = { + enable = true, + exclude = { + filetype = { + "notify", "packer", "qf", "diff", "fugitive", + "fugitiveblame" + }, + buftype = {"nofile", "terminal", "help"} + } + } + } }, - }, + view = {adaptive_size = true} } bind('n', "", ":NvimTreeToggle") @@ -160,162 +150,148 @@ bind('n', "r", ":NvimTreeRefresh") bind('n', "f", ":NvimTreeFindFile") bind('n', "f", ":NvimTreeFindFile") +-- colorizer +require'colorizer'.setup() ---floaterm -vim.g.floaterm_keymap_toggle = '' -vim.g.floaterm_keymap_next = '' -vim.g.floaterm_keymap_prev = '' -vim.g.floaterm_keymap_new = '' -vim.g.floaterm_gitcommit='floaterm' -vim.g.floaterm_autoinsert=1 -vim.g.floaterm_position="bottom" -vim.g.floaterm_width=0.99 -vim.g.floaterm_height=0.6 +-- toggleterm +require("toggleterm").setup { + size = function(term) + if term.direction == "horizontal" then + return 25 + elseif term.direction == "vertical" then + return vim.o.columns * 0.4 + end + end, + open_mapping = [[]], + autochdir = true +} ---closetag -vim.g.closetag_filenames = "*.html,*.xhtml,*.phtml,*.js,*.erb,*.jsx" -vim.g.closetag_xhtml_filenames = "*.xhtml,*.jsx,*.js,*.erb" -vim.g.closetag_emptyTags_caseSensitive = 1 -vim.g.closetag_shortcut = '>' +-- autoclose +require("autoclose").setup({ + options = {disabled_filetypes = {"text", "markdown"}} +}) ---nerdcommenter -bind('n',"","NERDCommenterToggle") -bind('n',"","NERDCommenterSexy") +-- icons +require'nvim-web-devicons'.setup {default = true} ---barbar +-- barbar bind('n', "", ":BufferPrevious") bind('n', "", ":BufferNext") bind('n', "", ":BufferMovePrevious") bind('n', ">", ":BufferMoveNext") bind('n', "", ":BufferClose") -for i = 1,8,1 -do +for i = 1, 8, 1 do bind('n', string.format("", i), string.format(":BufferGoto %d", i)) end ---presence.nvim +-- presence.nvim vim.g.presence_neovim_image_text = "Ballin" vim.g.presence_main_image = "file" ---treesitter-nvim +-- treesitter-nvim require'nvim-treesitter.configs'.setup { - ensure_install = "all", - highlight = { - enable = true, - additional_vim_regex_highlighting = true, - }, - indent = { - enable = true - } + ensure_install = "all", + highlight = {enable = true, additional_vim_regex_highlighting = true}, + indent = {enable = true} } ---vim-latex-live-preview -vim.g.livepreview_previewer = "zathura" - -require'colorizer'.setup() - local on_attach = function(client, bufnr) - local bufopts = { noremap=true, silent=true, buffer=bufnr } + local bufopts = {noremap = true, silent = true, buffer = bufnr} - vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') - vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts) - vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts) - vim.keymap.set('n', '', vim.lsp.buf.hover, bufopts) - vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts) - vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts) - vim.keymap.set('n', "", function() vim.lsp.buf.format { async = true } end, bufopts) + vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') + bind('n', 'gD', vim.lsp.buf.declaration, bufopts) + bind('n', 'gd', vim.lsp.buf.definition, bufopts) + bind('n', '', vim.lsp.buf.hover, bufopts) + bind('n', 'gi', vim.lsp.buf.implementation, bufopts) + bind('n', 'gr', vim.lsp.buf.references, bufopts) + bind('n', "", function() vim.lsp.buf.format {async = true} end, + bufopts) end -local servers = { "clangd", "rust_analyzer", "tsserver", "hls", "pylsp", "texlab", "rnix", "terraform_lsp", "html", "cssls", "jsonls", "svelte", "gopls" } -local capabilities = vim.lsp.protocol.make_client_capabilities() -capabilities.textDocument.completion.completionItem.snippetSupport = true -capabilities.textDocument.completion.completionItem.resolveSupport = { - properties = { - 'documentation', - 'detail', - 'additionalTextEdits', - } +local servers = { + "clangd", "rust_analyzer", "tsserver", "hls", "pylsp", "texlab", "nixd", + "terraform_lsp", "html", "cssls", "jsonls", "svelte", "gopls" } +local capabilities = vim.lsp.protocol.make_client_capabilities() +capabilities.textDocument.completion.completionItem.resolveSupport = { + properties = {'documentation', 'detail', 'additionalTextEdits'} +} + +-- lspconfig local nvimlsp = require('lspconfig') for _, lsp in ipairs(servers) do - nvimlsp[lsp].setup { capabilities = capabilities, on_attach = on_attach } + nvimlsp[lsp].setup {capabilities = capabilities, on_attach = on_attach} end - ---luasnip +-- luasnip local luasnip = require 'luasnip' -luasnip.snippets = { - html = {} -} +luasnip.snippets = {html = {}} luasnip.snippets.javascript = luasnip.snippets.html luasnip.snippets.javascriptreact = luasnip.snippets.html require("luasnip/loaders/from_vscode").lazy_load() +-- nvim cmp local cmp = require 'cmp' cmp.setup { - snippet = { - expand = function(args) - require('luasnip').lsp_expand(args.body) - end, - }, - mapping = { - [''] = cmp.mapping.select_prev_item(), - [''] = cmp.mapping.select_next_item(), - [''] = cmp.mapping.scroll_docs(-4), - [''] = cmp.mapping.scroll_docs(4), - [''] = cmp.mapping.complete(), - [''] = cmp.mapping.close(), - [''] = cmp.mapping.confirm { - behavior = cmp.ConfirmBehavior.Replace, - select = true, + snippet = { + expand = function(args) require('luasnip').lsp_expand(args.body) end }, - [''] = function(fallback) - if cmp.visible() then - cmp.select_next_item() - elseif luasnip.expand_or_jumpable() then - luasnip.expand_or_jump() - else - fallback() - end - end, - [''] = function(fallback) - if cmp.visible() then - cmp.select_prev_item() - elseif luasnip.jumpable(-1) then - luasnip.jump(-1) - else - fallback() - end - end + mapping = { + [''] = cmp.mapping.select_prev_item(), + [''] = cmp.mapping.select_next_item(), + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.close(), + [''] = cmp.mapping.confirm { + behavior = cmp.ConfirmBehavior.Replace, + select = true + }, + [''] = function(fallback) + if cmp.visible() then + cmp.select_next_item() + elseif luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() + else + fallback() + end + end, + [''] = function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif luasnip.jumpable(-1) then + luasnip.jump(-1) + else + fallback() + end + end }, sources = { - { name = 'nvim_lsp'}, - { name = 'path'}, - { name = 'nvim_lua'}, - { name = 'luasnip'}, - { name = 'calc'}, - { name = 'emoji'}, - { name = 'buffer'}, - { name = 'look'}, + {name = 'nvim_lsp'}, {name = 'path'}, {name = 'nvim_lua'}, + {name = 'luasnip'}, {name = 'calc'}, {name = 'emoji'}, + {name = 'buffer'}, {name = 'look'} }, formatting = { - format = require('lspkind').cmp_format({ - with_text = true, - menu = ({ - buffer = "[Buffer]", - nvim_lsp = "[LSP]", - luasnip = "[LuaSnip]", - nvim_lua = "[Lua]", - latex_symbols = "[Latex]", + format = require('lspkind').cmp_format({ + with_text = true, + menu = ({ + buffer = "[Buffer]", + nvim_lsp = "[LSP]", + luasnip = "[LuaSnip]", + nvim_lua = "[Lua]", + latex_symbols = "[Latex]" + }) }) - }), - }, + } } +-- telescope +require('telescope').setup() + vim.cmd("set shortmess+=c") ---STATUSLINE +-- STATUSLINE vim.cmd("set noruler") vim.o.laststatus = 2 local function mode() @@ -338,22 +314,17 @@ local function mode() return mode_map[m] end ---theming +-- theming local dark = true require("catppuccin").setup({ flavour = "mocha", - background = { - light = "latte", - dark = "mocha", - }, + background = {light = "latte", dark = "mocha"} }) vim.cmd("colorscheme catppuccin") -function hi(hi_var, hi_value) - vim.cmd("hi " .. hi_var .. " " .. hi_value) -end +function hi(hi_var, hi_value) vim.cmd("hi " .. hi_var .. " " .. hi_value) end local colors = require("catppuccin.palettes").get_palette "latte" hi("Light", "guibg=" .. colors.text .. " guifg=" .. colors.crust) @@ -361,50 +332,37 @@ hi("Misc", "guibg=" .. colors.pink .. " guifg=" .. colors.base) hi("Dark", "guibg=" .. colors.crust .. " guifg=" .. colors.text) local function git() - local branch = io.popen([[git rev-parse --abbrev-ref HEAD 2>/dev/null | tr -d '\n']]):read("*a") - return string.len(branch) > 0 and ' '.. branch or '' + local branch = io.popen( + [[git rev-parse --abbrev-ref HEAD 2>/dev/null | tr -d '\n']]):read( + "*a") + return string.len(branch) > 0 and ' ' .. branch or '' end - local statusline = { - '%#Light# ', - mode():upper() .. ' ', - '%#Misc#', - string.len(git()) > 0 and ' ' .. git() .. ' ' or '', - '%#Dark# ', - '%f ', - '%#Light#', - '%=', - '%#Dark# ', - '%y ', - '%#Light# ', - '%p%% ', - ' ', - '%l/%L ', - ' ', - '%c ' + '%#Light# ', mode():upper() .. ' ', '%#Misc#', + string.len(git()) > 0 and ' ' .. git() .. ' ' or '', '%#Dark# ', '%f ', + '%#Light#', '%=', '%#Dark# ', '%y ', '%#Light# ', '%p%% ', ' ', '%l/%L ', + ' ', '%c ' } vim.o.statusline = table.concat(statusline) - function _G.ToggleTheme() - if dark then - vim.cmd("set background=light") - local colors = require("catppuccin.palettes").get_palette "latte" - hi("Light", "guibg=" .. colors.crust .. " guifg=" .. colors.text) - hi("Misc", "guibg=" .. colors.peach .. " guifg=" .. colors.text) - hi("Dark", "guibg=" .. colors.text .. " guifg=" .. colors.crust) - vim.o.statusline = table.concat(statusline) - else - vim.cmd("set background=dark") - local colors = require("catppuccin.palettes").get_palette "mocha" - hi("Light", "guibg=" .. colors.text .. " guifg=" .. colors.crust) - hi("Misc", "guibg=" .. colors.pink .. " guifg=" .. colors.base) - hi("Dark", "guibg=" .. colors.crust .. " guifg=" .. colors.text) - vim.o.statusline = table.concat(statusline) - end - dark = not dark + if dark then + vim.cmd("set background=light") + local colors = require("catppuccin.palettes").get_palette "latte" + hi("Light", "guibg=" .. colors.crust .. " guifg=" .. colors.text) + hi("Misc", "guibg=" .. colors.peach .. " guifg=" .. colors.text) + hi("Dark", "guibg=" .. colors.text .. " guifg=" .. colors.crust) + vim.o.statusline = table.concat(statusline) + else + vim.cmd("set background=dark") + local colors = require("catppuccin.palettes").get_palette "mocha" + hi("Light", "guibg=" .. colors.text .. " guifg=" .. colors.crust) + hi("Misc", "guibg=" .. colors.pink .. " guifg=" .. colors.base) + hi("Dark", "guibg=" .. colors.crust .. " guifg=" .. colors.text) + vim.o.statusline = table.concat(statusline) + end + dark = not dark end bind('n', "", ":call v:lua.ToggleTheme()") -vim.g.tex_flavor = "latex"